
#ifndef _MEMBER_BJSONDOCUMENT_H_
#define _MEMBER_BJSONDOCUMENT_H_

#include <BJsonDocument>

#define json_member(document)	((member_BJsonDocument*)((BJsonDocument*)document)->_ptr)

namespace BWE
{
	enum DocType
	{
		DT_NONE,
		DT_HTML,
		DT_MAX,
	};
	class member_BJsonDocument
	{
	public:
		member_BJsonDocument(BJsonDocument* jsondocument);
		~member_BJsonDocument();

		BString& message();

		BString serialize(const BValue& value, int indent);

		char peek(const BString& text) const;
		char advance(const BString& text);
		void skipSpace(const BString& text);

		BValue parseObject(const BString& text);
		BValue parseArray(const BString& text);
		BValue parseValue(const BString& text);
		BValue parseNumber(const BString& text);
		BValue parseKeyword(const BString& text);
		BValue parseString(const BString& text);

	public:
		BJsonDocument*	boss;
		BValue			value;
		BValue			root;
		int				pos;
	};
}

#endif
